package com.weilx959.spt.core.serialize;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;

/**
 * json序列化器
 *
 * @param <T> 待序列化的对象类型
 */
public class JsonSerializer<T> implements ValueSerializer<T>, ValueDeserializer<T> {
    @Override
    public T deserialize(String value) {
        return StringUtils.isBlank(value) ? null : JSON.parseObject(value, new TypeReference<T>() {});
    }

    @Override
    public String serialize(T value) {
        return Objects.isNull(value) ? null : JSON.toJSONString(value);
    }
}
